package cuadrantes;

import java.sql.Date;
import java.util.List;

import auxiliar.Turno;

import clientes.Cliente;

import servicios.Servicio;

import dataBase.JDBCCuadranteDAO;
import empleados.Empleado;


public class GestorCuadrante {
	private JDBCCuadranteDAO cdao = new JDBCCuadranteDAO();
	//metodos propios para tuplas de cuadrantes
	public void crearTuplaCuadrante(Empleado e, int dia, Servicio s, Turno t,Date f){
		cdao.insertTuplaCuadrante(e, dia, s, t,f);
	}
	
	//devuelve una lista de tuplas en cuadrante en la BD para un Servicio y un tipo de trabajador y un turno
	public List<TuplaCuadrante> mostrarTuplasCuadranteServicioTurno(Servicio s,Turno turn,String tipoTrabajador, Date fecha){
		return cdao.selectTuplasCuadranteServicioTurno(s, turn, tipoTrabajador,fecha);
	}
	
	//devuelve una lista de tuplas en cuadrante en la BD para un Empleado y un servicio
	public List<TuplaCuadrante> mostrarTuplasCuadranteEmpleado(Servicio s,Empleado e) {
		return cdao.selectTuplasCuadranteEmpleado(s, e);
	}
	//Actualiza/modifica el trabajador de una tupla
	public void modificarTuplaCuadrante(Empleado emp, int dia, Servicio s, Turno t,String tipoTrabajador,Date fecha){
		cdao.updateTuplaCuadrante(emp, dia, s, t, tipoTrabajador, fecha);
	}
	
	//devuelve una lista de todos las servicios asociados a un empleado en la tabla cuadrantes
	public List<Servicio> mostrarServiciosEmp(String dni){
		return cdao.selectServiciosEmp(dni);
	}
	//devuelve una lista de todos las clientes asociados a un empleado en la tabla cuadrantes
	public List<Cliente> mostrarClientesEmp(String dni){
		return cdao.selectClientesEmp(dni);
	}
	//devuelve una lista con todos los empleados(menos el actual)del mismo tipo que el actual asociados a un servicio y cliente
	public List<Empleado> mostrarEmpleadosServ(String nombreServ,String cifCliente, Empleado eActual){
		return cdao.selectEmpServicios(nombreServ, cifCliente, eActual);
	}
	
	//devuelve una lista con los turnos de un empleado asignado a un servicio concreto
	public List<Turno> mostrarTurnosServEmp(String nombreServ,String cifCliente, String dni){
		return cdao.selectTurnosServiciosEmp(nombreServ, cifCliente, dni);
	}
	
	//Borra una fila del cuadrante, es decir dado un turno lo borra del cuadrante
	public void BorrarFilaCuadrante(Servicio s, Turno t,String tipoTrab){
		cdao.deleteCuadranteFila(s, t,tipoTrab);
	}
	//Borra un cuadrante
	public void borrarCuadrante(Servicio s,String tipoTrab, Date f){
		cdao.deleteCuadrante(s, tipoTrab, f);
	}
	//devuelve una tuplas en cuadrante en la BD para un Servicio y un tipo de trabajador y un turno y una fecha
	public TuplaCuadrante mostrarTuplaCuadranteServicioTurno(Servicio s,int dia,Turno turn,String tipoTrabajador, Date f) {
		return cdao.selectTuplaCuadranteServicioTurno(s, dia, turn, tipoTrabajador, f);
	}
	//devuelve una lista de empleados de un cuadrante en un dia y fecha
	public List<Empleado> mostrarEmpCuadrante(Servicio s,int dia,String tipoTrabajador, Date f) {
		return cdao.selectEmpCuadrante(s, dia, tipoTrabajador, f);
	}
	//devuelve una lista de fechas para un empleado y un servicio
	public List<Date> mostrarFechasCuadranteEmp(Servicio s,Empleado e) {
		return cdao.selectFechasCuadranteEmp(s, e);
	}
	//devuelve una lista con los turnos de un empleado asignado a un servicio concreto en una fecha
	public List<Turno> mostrarTurnosServiciosEmpFecha(String nombreServ,String cifCliente,String dni,Date fecha){
		return cdao.selectTurnosServiciosEmpFecha(nombreServ, cifCliente, dni, fecha);
	}
}
